package com.xiehospital.system.service.impl;

import java.util.List;

import com.xiehospital.common.constant.UserConstants;
import com.xiehospital.common.core.domain.entity.SysUser;
import com.xiehospital.common.utils.DateUtils;
import com.xiehospital.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xiehospital.system.mapper.SysPatientMapper;
import com.xiehospital.common.core.domain.entity.SysPatient;
import com.xiehospital.system.service.ISysPatientService;

/**
 * 患者信息Service业务层处理
 *
 * @author xierujian
 * @date 2024-02-25
 */
@Service
public class SysPatientServiceImpl implements ISysPatientService
{
    @Autowired
    private SysPatientMapper sysPatientMapper;

    /**
     * 查询患者信息
     *
     * @param patientId 患者信息主键
     * @return 患者信息
     */
    @Override
    public SysPatient selectSysPatientByPatientId(Long patientId)
    {
        return sysPatientMapper.selectSysPatientByPatientId(patientId);
    }

    /**
     * 查询患者信息列表
     *
     * @param sysPatient 患者信息
     * @return 患者信息
     */
    @Override
    public List<SysPatient> selectSysPatientList(SysPatient sysPatient)
    {
        return sysPatientMapper.selectSysPatientList(sysPatient);
    }

    @Override
    public boolean checkIdCard(SysPatient sysPatient) {
        Long patientId = StringUtils.isNull(sysPatient.getPatientId()) ? -1L : sysPatient.getPatientId();
        SysUser info = sysPatientMapper.checkIdCard(sysPatient.getIdCard());
        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != patientId.longValue())
        {
            return UserConstants.NOT_UNIQUE;
        }
        return UserConstants.UNIQUE;
    }

    /**
     * 新增患者信息
     *
     * @param sysPatient 患者信息
     * @return 结果
     */
    @Override
    public int insertSysPatient(SysPatient sysPatient)
    {
        sysPatient.setCreateTime(DateUtils.getNowDate());
        return sysPatientMapper.insertSysPatient(sysPatient);
    }

    /**
     * 修改患者信息
     *
     * @param sysPatient 患者信息
     * @return 结果
     */
    @Override
    public int updateSysPatient(SysPatient sysPatient)
    {
        sysPatient.setUpdateTime(DateUtils.getNowDate());
        return sysPatientMapper.updateSysPatient(sysPatient);
    }

    /**
     * 批量删除患者信息
     *
     * @param patientIds 需要删除的患者信息主键
     * @return 结果
     */
    @Override
    public int deleteSysPatientByPatientIds(Long[] patientIds)
    {
        return sysPatientMapper.deleteSysPatientByPatientIds(patientIds);
    }

    /**
     * 删除患者信息信息
     *
     * @param patientId 患者信息主键
     * @return 结果
     */
    @Override
    public int deleteSysPatientByPatientId(Long patientId)
    {
        return sysPatientMapper.deleteSysPatientByPatientId(patientId);
    }
}
